#ifndef AST_TRANSLATION_UNIT_H
#define AST_TRANSLATION_UNIT_H

#include "../ASTNode.h"


class ExternalDeclaration;


/*
C99 6.9
translation-unit:
		external-declaration
		translation-unit	external-declaration
*/
class TranslationUnit : public ASTNode
{
protected:
	TranslationUnit(): ASTNode(ASTNode::translation_unit){};
public:
	TranslationUnit(ExternalDeclaration *pExDeclaration):ASTNode(ASTNode::translation_unit), m_pExDeclaration(pExDeclaration), m_pTransUnit(NULL){};
	TranslationUnit(TranslationUnit * pTransUnit, ExternalDeclaration *pExDeclaration):ASTNode(ASTNode::translation_unit), m_pExDeclaration(pExDeclaration), m_pTransUnit(pTransUnit){};
	virtual ~TranslationUnit();
	
	virtual void 			codeGen();

protected:
	ExternalDeclaration *		m_pExDeclaration;
	TranslationUnit *			m_pTransUnit;
};



#endif


